Monitoring Uptime Kuma in Docker installieren und nutzen
Ich betreibe zuhause ein eigenes Monitoring. Das deckt mein internes Netzwerk sauber ab und liefert mir viele Details.
Trotzdem nutze ich zusätzlich Uptime Kuma für alle Services, die öffentlich im Internet erreichbar sind.
Der Grund ist simpel. Ich will von außen sehen, was wirklich erreichbar ist. Nicht aus Sicht meines Heimnetzes, sondern so, wie ein normaler Benutzer meine Dienste wahrnimmt. Genau hier spielt Uptime Kuma seine Stärke aus!
Ein weiterer Punkt ist die Transparenz. Die Statusseite teile ich bewusst mit Freunden und mit allen, die meine Services nutzen. So kann jeder selbst sehen, ob gerade alles läuft oder ob es irgendwo hakt.
Mein internes Monitoring würde ich dagegen niemals öffentlich ins Internet stellen.
Meine öffentliche Statusseite kannst du dir jederzeit anschauen:
Diese ist bewusst schlank gehalten, aber liefert genau die Infos, die man im Ernstfall braucht.

✨ Was Uptime Kuma alles kann
Uptime Kuma ist kein überladenes Monster, sondern ein sehr fokussiertes Tool. Und trotzdem bringt es erstaunlich viele Funktionen mit.
Überwachen kannst du unter anderem:
- HTTP(s), TCP, Ping und DNS Records
- HTTP(s) Keyword Checks und JSON Queries
- Websocket, Push-Monitoring
- Steam Game Server
- Docker Container
Dazu kommen weitere Highlights:
- Sehr schnelle, moderne und reaktive Oberfläche
- Benachrichtigungen über Telegram, Discord, Gotify, Slack, Pushover, E-Mail (SMTP) und über 90 weitere Dienste
- Abfrageintervalle bis herunter auf 20 Sekunden
- Mehrsprachige Oberfläche
- Mehrere Statusseiten möglich
- Statusseiten lassen sich gezielt Domains zuordnen
- Ping-Verlauf als Diagramm
- Zertifikatsinformationen (TLS)
- Proxy-Unterstützung
- Zwei-Faktor-Authentifizierung
Kurz gesagt: Alles, was man für ein sauberes externes Monitoring braucht, ist an Bord.
🧩 Voraussetzungen
Bevor es losgeht, brauchst du natürlich eine funktionierende Docker-Umgebung.
Wenn du Docker noch nicht installiert hast, findest du hier eine Schritt-für-Schritt-Anleitung, wie du das auf Ubuntu mit einem Script erledigst:
Sobald Docker läuft, kann es direkt weitergehen.
🐳 Installation mit Docker Compose
Ich setze fast alles mit Docker Compose um. Auch hier.
Das Setup ist ziemlich easy und schnell umgesetzt. Das Repository vom Louis Lam findest du hier:
Wichtiger Hinweis: Die in diesem Beitrag gezeigten Passwörter wurden ausschließlich für diesen Artikel neu erzeugt. Du solltest sie trotzdem unbedingt durch eigene, sichere Werte ersetzen, bevor du das Setup produktiv einsetzt!
Docker-Compose Datei
---
services:
uptime-kuma:
image: ghcr.io/louislam/uptime-kuma:2.0.2
container_name: uptime-kuma
dns:
- 1.1.1.1
- 8.8.8.8
networks:
ukuma.dockernetwork.local:
ipv4_address: 172.16.23.10
volumes:
- ./data:/app/data
ports:
- 3001:3001
restart: always
depends_on:
- uptime-kuma-db
uptime-kuma-db:
image: mariadb:12
container_name: uptime-kuma-db
hostname: uptime-kuma-db
environment:
MYSQL_ROOT_PASSWORD: "nuwt3zw2XJNC"
MARIADB_PASSWORD: "VG3Niwqp9D3z"
MARIADB_USER: "ukdbuser"
MYSQL_DATABASE: "kumadb"
networks:
ukuma.dockernetwork.local:
ipv4_address: 172.16.23.11
volumes:
- ./mariadb:/var/lib/mysql
networks:
ukuma.dockernetwork.local:
external: true
🌐 Docker Netzwerk anlegen
Ich arbeite gerne mit festen IPs in eigenen Docker-Netzwerken. Das macht spätere Anpassungen deutlich entspannter.
docker network create --subnet=172.16.23.0/24 ukuma.dockernetwork.local
Damit ist die Basis gelegt und die Container finden sich zuverlässig untereinander.
🗄️ MariaDB konfigurieren
Für größere Installationen rate ich ganz klar zu MariaDB.
Bei mir laufen knapp 100 Checks, und da kommt SQLite irgendwann an seine Grenzen.
Datenbank-Konfiguration anlegen
mkdir ./data/ && cd ./data && nano db-config.json
{
"type": "mariadb",
"port": 3306,
"hostname": "uptime-kuma-db",
"username": "ukdbuser",
"password": "VG3Niwqp9D3z",
"dbName": "kumadb"
}
Wichtiger Hinweis:
Wenn du weißt, dass es eine kleine Installation bleibt, kannst du komplett auf SQLite setzen.
Dann entfernst du einfach den MariaDB-Container aus der Compose (inklusive depends_on) und brauchst auch keine db-config.json. Uptime Kuma nutzt dann automatisch SQLite.
Das Compose sollte dann so aussehen:
---
services:
uptime-kuma:
image: ghcr.io/louislam/uptime-kuma:2.0.2
container_name: uptime-kuma
dns:
- 1.1.1.1
- 8.8.8.8
networks:
ukuma.dockernetwork.local:
ipv4_address: 172.16.23.10
volumes:
- ./data:/app/data
ports:
- 3001:3001
restart: always
networks:
ukuma.dockernetwork.local:
external: true
▶️ Container starten und erste Anmeldung
Jetzt wird es einfach.
docker-compose up
Du kannst direkt die Logs mitverfolgen und siehst, ob alles sauber hochkommt.
Anschließend rufst du Uptime Kuma über http://IP:3001 auf.

Beim ersten Start legst du einen Benutzer und ein Kennwort fest. Danach landest du direkt im Dashboard. Ab hier beginnt der eigentliche Spaß.

⚙️ Einstellungen
Ich empfehle, die Einstellungen einmal komplett und in Ruhe durchzugehen. Das dauert wirklich keine zehn Minuten, spart dir aber später unnötigen Aufwand.
Vor allem, wenn du mehr als nur ein oder zwei Checks planst, lohnt sich dieser Schritt enorm. Uptime Kuma ist an vielen Stellen sehr flexibel, man muss die Möglichkeiten nur einmal sauber setzen.
Allgemein:
Hier kannst du unter anderem die primäre Basis-URL definieren. Das ist besonders wichtig, wenn du Uptime Kuma über einen Reverse Proxy oder mit einer eigenen Domain betreibst. Die gesetzte URL wird an mehreren Stellen genutzt, zum Beispiel bei Statusseiten oder Benachrichtigungen.

Erscheinungsbild:
In diesem Bereich legst du fest, wie die Oberfläche aussieht. Du kannst sowohl den hellen als auch den dunklen Modus anpassen.
Benachrichtigungen:
Das ist einer der wichtigsten Punkte. Uptime Kuma unterstützt eine riesige Auswahl an Diensten wie Telegram, Slack, Signal, Pushover, Matrix, Ntfy und viele mehr. Mein Rat: Richte mindestens einen Kanal direkt am Anfang ein, damit du bei Problemen sofort informiert wirst.
Reverse Proxy:
Falls Uptime Kuma hinter einem Reverse Proxy läuft, kannst du hier die entsprechenden Einstellungen setzen.
Tags:
Tags sind Gold wert, sobald du mehrere Monitore hast. Du kannst damit Servernamen, Standorte, Rechenzentren oder Diensttypen abbilden. Später hilft das enorm bei der Übersicht und bei Statusseiten.
Monitoring Verlauf:
Hier legst du fest, wie lange Verlaufsdaten gespeichert werden. Je nach Umfang deiner Installation kann es sinnvoll sein, die Dauer bewusst zu begrenzen, um Speicherplatz und Datenbank schlank zu halten.
Docker-Hosts:
In diesem Bereich kannst du Docker Hosts definieren und direkt Container überwachen. Das ist besonders praktisch, wenn du viele Dienste containerisiert betreibst und deren Zustand im Blick behalten möchtest.
Sicherheit:
Hier solltest du auf jeden Fall reinschauen. Du kannst dein Passwort ändern und für den Benutzer direkt 2FA aktivieren. Gerade bei öffentlich erreichbaren Installationen ist das aus meiner Sicht Pflicht.
API Schlüssel:
Wenn du Uptime Kuma automatisieren oder extern abfragen möchtest, kannst du hier API Keys anlegen. Das eröffnet viele Möglichkeiten für eigene Skripte oder Integrationen.
📡 Ersten Monitor anlegen
Jetzt wird es konkret. Nachdem die Grundeinstellungen passen, lege ich meinen ersten Monitor an. Für den Einstieg eignet sich ein einfacher Ping-Monitor sehr gut, weil er schnell zeigt, ob ein Host grundsätzlich erreichbar ist.
Oben links klicke ich auf „Neuen Monitor hinzufügen“ und wähle als Monitortyp Ping aus. Dieser Typ prüft in regelmäßigen Abständen, ob das Ziel auf Netzwerkebene antwortet.
Als Anzeigename trage ich Dockerhost 04 ein. Hier kannst du frei wählen, was für dich am sinnvollsten ist, zum Beispiel den Hostnamen, den Servernamen oder eine interne Bezeichnung.
Beim Hostname gebe ich die IP-Adresse des zu überwachenden Systems an, in meinem Fall 10.0.1.109. Alternativ kannst du hier natürlich auch einen FQDN eintragen.
Bei den weiteren Einstellungen lasse ich es zunächst bewusst konservativ:
- Prüfintervall: 60 Sekunden
- Wiederholungen: 5
- Timeout: 2 Sekunden
Das bedeutet: Der Host wird einmal pro Minute geprüft. Erst wenn fünf Prüfungen hintereinander fehlschlagen, gilt der Monitor als offline und eine Benachrichtigung wird ausgelöst. Das verhindert unnötige Alarme bei kurzen Netzwerkaussetzern.

Optional kannst du jetzt bereits Tags vergeben, um den Monitor später besser zu strukturieren. Außerdem lassen sich vorhandene Benachrichtigungen auswählen oder ein zuvor definierter Proxy nutzen. Das ist kein Muss für den Start, aber später sehr hilfreich.
Zum Schluss speicherst du den Monitor. Und das war’s auch schon.
Der Host taucht sofort in der Übersicht auf und wird ab diesem Moment kontinuierlich überwacht.

📄 Eigene Statusseite erstellen
Statusseiten gehören für mich zu den absoluten Highlights von Uptime Kuma. Sie bieten eine einfache Möglichkeit, den aktuellen Zustand deiner Services übersichtlich darzustellen, ganz ohne Login. Ideal für dich selbst, aber auch für Nutzer, Kunden oder Freunde.
Um eine Statusseite anzulegen, klickst du oben rechts auf „Status-Seiten“ und anschließend auf „Neue Status-Seite“.
Hier vergibst du zuerst einen Namen für die Seite. Ich entscheide mich in meinem Fall für Main. Zusätzlich definierst du die URL, unter der die Statusseite erreichbar sein soll. Ich trage hier ebenfalls main ein.

Nach dem Speichern wird die Statusseite automatisch aufgerufen und direkt in den Bearbeitungsmodus versetzt. Jetzt kannst du die Seite frei gestalten.
Ich lege zunächst eine Gruppe mit dem Namen Docker-Hosts an. Gruppen helfen enorm, wenn später mehrere Services oder Systeme auf einer Seite dargestellt werden sollen.
Anschließend füge ich den zuvor angelegten Monitor dieser Gruppe hinzu. So wird der Status des Hosts sauber und übersichtlich auf der Statusseite angezeigt.
Zum Abschluss klicke ich unten links auf Speichern.
Und damit ist es auch schon erledigt. Deine erste eigene Statusseite ist online und zeigt den aktuellen Zustand deiner überwachten Dienste auf einen Blick.

✅ Fazit aus der Praxis
Uptime Kuma ist für mich genau das richtige Werkzeug, wenn es um externes Monitoring geht. Es ist schnell eingerichtet, übersichtlich und gleichzeitig flexibel genug, um auch größere Setups sauber abzubilden. Genau diese Mischung macht es für mich so attraktiv.
Egal, ob du drei Services oder hundert überwachst. Mit einer durchdachten Struktur, sinnvollen Tags und der passenden Datenbank bleibt alles übersichtlich und gut wartbar. Und genau das will man im Fehlerfall: klare Informationen, ohne erst lange suchen zu müssen.
Kleiner Ausblick zum Schluss:
Ich werde in Kürze einen weiteren Beitrag veröffentlichen, in dem ich zeige, wie man eine bestehende SQLite-Datenbank auf MariaDB migriert, falls die Installation mit der Zeit doch größer wird. Aus eigener Erfahrung kann ich sagen, dass sich dieser Schritt lohnt, sobald das Monitoring wächst.
👥 Techniverse Community
Lust auf Austausch rund um Matrix, Selfhosting und andere smarte IT-Lösungen?
In der Techniverse Community triffst du Gleichgesinnte, kannst Fragen stellen oder einfach nerdigen Talk genießen. 🚀
👉 Jetzt der Gruppe auf Matrix beitreten
~ Direkte Raumadresse: #community:techniverse.net
👉 Für lockere Gespräche abseits der Kernthemen komm in den Talkraum
~ Direkte Raumadresse: #talk:techniverse.net
Wir freuen uns, wenn du dabei bist!



